﻿<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Example16.aspx.cs" Inherits="Chapter35.Example16" %>

<!DOCTYPE html>

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>代码清单 35-16 保存和恢复状态</title>
    <meta name="author" content="Adam Freeman" />
    <meta name="description" content="A simple example" />
    <link rel="shortcut icon" type="image/x-icon" href="favicon.ico" />
    <style>
        canvas {
            border: thin solid black;
            margin: 4px;
        }
    </style>
</head>
<body>
    <canvas id="canvas" width="500" height="140">Your browser doesn't support the <code>canvas</code> element.</canvas>
    <div>
        <button>Save</button>
        <button>Restore</button>
    </div>
    <script>
        var ctx = document.getElementById('canvas').getContext('2d');
        var grad = ctx.createLinearGradient(500, 0, 500, 140);
        grad.addColorStop(0, 'red');
        grad.addColorStop(.5, 'white');
        grad.addColorStop(1, 'black');

        var colors = ['black', grad, 'red', 'green', 'yellow', 'black', 'grey'];
        var index = 0;
        ctx.fillStyle = colors[index];
        draw();

        var buttons = document.getElementsByTagName('button');
        for (var i = 0; i < buttons.length; i++) {
            buttons[i].onclick = handleButtonPress;
        }

        function handleButtonPress(e) {
            switch (e.target.innerHTML) {
                case 'Save':
                    ctx.save();
                    index = (index + 1) % colors.length;
                    ctx.fillStyle = colors[index];
                    draw();
                    break;
                case 'Restore':
                    index = Math.max(0, index - 1);
                    ctx.restore();
                    draw();
                    break;
            }
        }

        function draw() {
            ctx.fillRect(0, 0, 500, 140);
        }
    </script>
</body>
</html>
